home *** CD-ROM | disk | FTP | other *** search
- // ------------------------------- //
- // -------- Start of File -------- //
- // ------------------------------- //
- // ----------------------------------------------------------- //
- // C++ Header File Name: rbtreeb.h
- // Compiler Used: MSVC40, DJGPP 2.7.2.1, GCC 2.7.2.1, HP CPP 10.24
- // Produced By: Doug Gaer
- // File Creation Date: 01/23/1997
- // Date Last Modified: 03/15/1999
- // Copyright (c) 1997 Douglas M. Gaer
- // ----------------------------------------------------------- //
- // ---------- Include File Description and Details ---------- //
- // ----------------------------------------------------------- //
- /*
- The VBD C++ classes are copyright (c) 1997, by Douglas M. Gaer.
- All those who put this code or its derivatives in a commercial
- product MUST mention this copyright in their documentation for
- users of the products in which this code or its derivative
- classes are used. Otherwise, you have the freedom to redistribute
- verbatim copies of this source code, adapt it to your specific
- needs, or improve the code and release your improvements to the
- public provided that the modified files carry prominent notices
- stating that you changed the files and the date of any change.
-
- THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
- THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
- IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
- YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
- CORRECTION.
-
- (R)ed (B)lack (T)ree node data independent functions.
- */
- // ----------------------------------------------------------- //
- #ifndef __RBTREEB_HPP
- #define __RBTREEB_HPP
-
- #include "rbnode.h"
-
- // The PtrPack struct is used to to save function-calling overhead
- struct PtrPack
- {
- RBNodeBase *t; // The current node
- RBNodeBase *p; // Parent
- RBNodeBase *g; // Grandparent
- RBNodeBase *gg; // Great Grandparent
- RBNodeBase *s; // Sibling
- RBNodeBase *rs; // Right children of s
- RBNodeBase *ls; // Left children of s
- RBNodeBase *m; // Matching node
- RBNodeBase *pm; // Parent of matching node
- };
-
- // Standalone functions that operate on RBNodeBase pointers.
- // This implementation provides maximum code sharing.
- RBNodeBase *InsBalance(RBNodeBase *Root, PtrPack &pp);
- RBNodeBase *DelBalance(RBNodeBase *Root, PtrPack &pp);
- RBNodeBase *DoReplacement(RBNodeBase *Root, PtrPack &pp);
- RBNodeBase *DetachMinMax(RBNodeBase *&Root, int mx);
-
- #endif // __RBTREEB_HPP
- // ----------------------------------------------------------- //
- // ------------------------------- //
- // --------- End of File --------- //
- // ------------------------------- //
-